
<?php

abstract class Controller {

    protected $Vista;

    public function __construct() {
        $this->Vista = new View(new Request());
    }

    abstract public function index();

    protected function LoadModel($model) {
        $modelo = $model . "Model";
        $RutaModelo = ROOT . "Modelos" . DS . $modelo . ".php";

        if (is_readable($RutaModelo)) {
            require_once $RutaModelo;

            $Modelo = new $modelo;
            return $Modelo;
        } else {
            throw new Exception('Error de Modelo');
        }
    }

    protected function GetLibrary($lib) {
        $RutaLib = ROOT . 'Libs' . DS . $lib . '.php';
        if (is_readable($RutaLib)) {
            require_once $RutaLib;
        } else {
            throw new Exception('No se encuentra la libreria ' . $RutaLib);
        }
    }

    protected function GetTexto($Value) {
        if (isset($_POST[$Value]) && !empty($_POST[$Value])) {
            $_POST[$Value] = htmlspecialchars($_POST[$Value], ENT_QUOTES);
            return $_POST[$Value];
        } else {
            return '';
        }
    }

    protected function GetEntero($Value) {
        if (isset($_POST[$Value]) && !empty($_POST[$Value])) {
            $_POST[$Value] = filter_input(INPUT_POST, $Value, FILTER_VALIDATE_INT);
            return $_POST[$Value];
        } else {
            return 0;
        }
    }

    protected function Redireccionar($ruta = false) {
        if ($ruta) {
            header('location:' . BASE_URL . $ruta);
            exit;
        } else {
            header('location:' . BASE_URL);
            exit;
        }
    }

}

?>
